package br.com.gerenteweb.daos;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.gerenteweb.produto.UnidadeDeMedida;
import br.com.hibernate.util.HibernateUtil;

public class UnidadeDeMedidaDao implements Serializable {

	private Session sessao;
	private Transaction trans;
	private List<UnidadeDeMedida> list;

	public void addUnidadeDeMedida(UnidadeDeMedida medida) {
		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			trans = sessao.beginTransaction();

			UnidadeDeMedida uniMed = new UnidadeDeMedida();

			uniMed.setNome(medida.getNome());

			sessao.save(uniMed);

			trans.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			sessao.close();
		}

	}

	public void removeUnidadeDeMedida(UnidadeDeMedida medida) {
		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			trans = sessao.beginTransaction();

			sessao.delete(medida);
			trans.commit();
		} catch (Exception e) {
			System.out.println("erro akii");
			e.printStackTrace();
			System.out.println("erro akii");
		} finally {
			sessao.close();
		}
	}

	public UnidadeDeMedida getPorID(int id) {
		UnidadeDeMedida uniMed = null;
		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			trans = sessao.beginTransaction();
			uniMed = (UnidadeDeMedida) sessao.get(UnidadeDeMedida.class, id);
			trans.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			sessao.close();
		}
		return uniMed;
	}

	public List<UnidadeDeMedida> getMedidas() {
		sessao = HibernateUtil.getSessionFactory().openSession();
		trans = sessao.beginTransaction();

		Criteria cri = sessao.createCriteria(UnidadeDeMedida.class);
		this.list = cri.list();
		sessao.flush();
		sessao.close();
		return list;
	}

	public Session getSessao() {
		return sessao;
	}

	public void setSessao(Session sessao) {
		this.sessao = sessao;
	}

	public Transaction getTrans() {
		return trans;
	}

	public void setTrans(Transaction trans) {
		this.trans = trans;
	}

	public List<UnidadeDeMedida> getList() {
		return list;
	}

	public void setList(List<UnidadeDeMedida> list) {
		this.list = list;
	}

}
